Computer systems typically comprise components that can be characterized as clients and resources. A client can be, e.g., a host computer that uses the resources for certain functions such as communications and the storage of data. A bus comprises one or more wires that electrically couple the clients and resources of the computer system to one another. Computer systems implement bus protocols to facilitate and control communications between the various components of the system over the bus. The bus protocol defines the physical characteristics of the bus, bus transactions, phase specifications and control and handshake signals that permit the transmission of data and control information between the clients and resources.
Various industry standard bus protocols have been designed to enable users to assemble computer systems comprising components that, although made by different manufacturers, are consistent with one another in terms of physical and logical compatibility according to an industry standard bus protocol. One example of an industry standard bus protocol is the Universal Serial Bus Specification (USB protocol) jointly developed by a consortium of companies including the Intel Corporation, IBM PC Company, Microsoft Corporation and NEC and others. The 1.0 Final Draft Revision of the USB protocol dated Nov. 13, 1995 is hereby expressly incorporated by reference.
The USB protocol provides a fast, low cost, bi-directional, peripheral serial interface bus that can be implemented in an input/output port (I/O port) of a host computer such as a personal computer (PC). The USB protocol supports "plug and play" functionality so that a wide variety of different types of resources can be coupled to I/O ports of the host computer implementing the USB protocol, and be available for use as a resource by the host computer. Thus, resources including peripheral devices such as telephone/fax/modem adapters, video scanners, keyboards, mice and so on, can be plugged into a serial port of the host computer and be usable by the host computer upon plug-in.
One aspect of the USB protocol that enables the plug and play versatility is an identification negotiation. In an identification negotiation, a serial port controller of the host computer performs a control bus transaction according to the USB protocol, over the bus, with a peripheral device, upon plug-in, to determine the configuration and operating state characteristics of the peripheral device. The information acquired by the host computer by way of the identification negotiation enables the host computer to utilize the resource.
Pursuant to the USB protocol, the host computer acts as a master of the bus, and therefore controls bus transactions. The bus transactions can include requests related to the identification negotiation or other functions to be performed by the resource for the master. However, in many peripheral devices, the intelligent component of the device, e.g. an on-board processor controlling operation of the peripheral device, comprises an inexpensive component that cannot match the speed of operation of the host computer. For example, the on-board intelligent component may not be able to complete tasks associated with an identification negotiation or other requests by the computer, in real time, relative to the host computer. Other functions implemented in hardware on the peripheral device may also comprise inexpensive components unable to match the speed of operation of the host computer.
Thus, the on-board intelligent component and other hardware functions may not be able to effectively participate in the identification negotiation or other request tasks required by the host computer when the host computer is acting as a bus master. However, the use of more expensive, high performance on-board hardware components, to enable the device to keep pace with the host computer, may impact the commercial viability of the peripheral device.
Accordingly, there is a need for a programmable and adaptive resource allocation device and resource use recorder to enable a less expensive, lower performing intelligent components to allocate resources to a host computer when the host computer is acting as a bus master, in a manner that permits the intelligent component to perform an identification negotiation or other control transaction tasks for a higher performance host computer. This will permit a low cost intelligent component to achieve, e.g., plug and play compatibility with a host computer pursuant to a high performance protocol such as the USB protocol.